// Copyright 2023 The LUCI Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package rpcs

import (
	"context"

	apipb "go.chromium.org/luci/swarming/proto/api_v2"
	"go.chromium.org/luci/swarming/server/acls"
)

// GetRequest fetches a model.TaskRequest for a given apipb.TaskIdRequest.
func (*TasksServer) GetRequest(ctx context.Context, req *apipb.TaskIdRequest) (*apipb.TaskRequestResponse, error) {
	taskRequest, err := FetchTaskRequest(ctx, req.TaskId)
	if err != nil {
		return nil, err
	}
	res := State(ctx).ACL.CheckTaskPerm(ctx, taskRequest, acls.PermTasksGet)
	if !res.Permitted {
		return nil, res.ToGrpcErr()
	}
	return taskRequest.ToProto(), nil
}
